Справочник по конфигурации¶
В этом разделе описаны опции конфигурации, представленные в Tarantool DB.
app.roles.slow_log¶
Секция app.roles.slow_log
задает опции конфигурации журнала медленных запросов.
Пример
roles_cfg:
app.roles.slow_log:
enable: true
threshold: 3
namespaces:
- app
app.roles.slow_log.enable¶
Включить запись в журнал медленных запросов. По умолчанию запись будет включена для запросов через модуль CRUD.
Тип: boolean
Значение по умолчанию: false
app.roles.slow_log.threshold¶
Максимальное время выполнения запроса в секундах. При превышении этого значения запрос считается медленным и записывается в журнал.
Тип: number
Значение по умолчанию: 0.5
app.roles.slow_log.namespaces¶
Задать функции, для которых будет включено логирование медленных запросов.
Тип: table
Значение по умолчанию: {}
app.roles.tracing¶
Секция app.roles.tracing
задает опции конфигурации трассировки.
Пример
roles_cfg:
app.roles.tracing:
enabled: true
global_sample_rate: 0
sample_rates:
get_token_api: 2
debug_1: 1
base_url: 'http://tracing:9411/api/v2/spans'
api_method: 'POST'
report_interval: 1
spans_limit: 1000
app.roles.tracing.global_sample_rate¶
Глобальный коэффициент частоты трассировки – трассируется каждый N-й вызов функции. Примеры:
10
– трассируется каждый десятый запрос;
1
– трассируются все запросы;
0
– все запросы не трассируются.
Примечание
Рекомендуется установить такое значение параметра, чтобы трассировалось не более одного запроса в секунду.
Например, при нагрузке 1000 RPS, если функция start_span()
вызывается при каждом обращении к базе, установите значение global_sample_rate = 1000
.
Тип: integer
Значение по умолчанию: 0
app.roles.tracing.sample_rates¶
Коэффициенты частоты трассировки для заданных сегментов (spans). Значение опции – это таблица из пар ключ-значение, где
ключ – название сегмента;
значение – частота трассировки для этого сегмента.
Примечание
Рекомендуется установить такое значение параметра, чтобы трассировалось не более одного запроса в секунду.
Например, при нагрузке 1000 RPS у конкретной функции, в которой вызывается функция start_span() с названием get_user()
,
установите в tracing.sample_rates
ключ-значение {get_user: 1000}
.
Тип: table
Значение по умолчанию: ‘{}’
Пример:
sample_rates:
get_user: 1000
get_token: 10000
app.roles.tracing.base_url¶
URL-адрес сервера трассировки, куда отправляются данные трассировки.
Тип: string
Значение по умолчанию: ‘http://127.0.0.1:9411/api/v2/spans’
app.roles.tracing.api_method¶
HTTP-метод, используемый для отправки данных трассировки на сервер.
Возможные значения: POST
, GET
, PUT
.
Тип: string
Значение по умолчанию: ‘POST’
app.roles.tracing.report_interval¶
Интервал в секундах между отправкой на сервер собранных данных о трассировке.
Тип: integer
Значение по умолчанию: 10
app.roles.tracing.spans_limit¶
Максимальное количество сегментов (span) трассировки, которые могут быть сохранены локально на экземпляре Tarantool перед отправкой во внешнюю систему хранения результатов трассировки.
Тип: integer
Значение по умолчанию: 1000
roles.tcf-<worker_or_coordinator>¶
Секция задает опции конфигурации для технологических ролей roles.tcf-worker
и roles.tcf-coordinator
.
Опции определяют настройки кластеров, необходимые для взаимодействия с модулем Tarantool Clusters Federation (TCF).
Полный список опций приведен в документации TCF.
Задать конфигурацию кластера можно как через yaml
-файл, так и в веб-интерфейсе Tarantool DB на вкладке TCF.
Узнать больше про технологические роли, связанные с TCF: roles.tcf-worker, roles.tcf-coordinator.
config.storage¶
Секция config.storage
определяет опции конфигурации узла как части централизованного хранилища конфигураций.
Узнать больше: Запуск кластера Tarantool DB как централизованного хранилища конфигураций.
Пример
roles_cfg:
config.storage:
status_check_interval: 3
config.storage.status_check_interval¶
Интервал в секундах между проверками состояния сервера в кластере.
Тип: number
Значение по умолчанию: 5
roles.crud-<router_or_storage>¶
Секция задает опции конфигурации для технологических ролей roles.crud-router
и roles.crud-storage
.
Опции используются для настройки сбора метрик модуля CRUD.
Узнать больше про роли, связанные с crud
: roles.crud-router, roles.crud-storage.
roles.crud-<router_or_storage>.stats_quantile_age_buckets_count
roles.crud-<router_or_storage>.stats_quantile_tolerated_error
Пример
roles_cfg:
roles.metrics-export:
http:
- endpoints:
- format: prometheus
path: /metrics
listen: 8081
groups:
routers:
replication:
failover: manual
sharding:
roles: [router]
roles:
- roles.crud-router
- roles.metrics-export
- roles.dictionary-router
roles_cfg:
roles.crud-router:
stats: true
stats_driver: metrics
stats_quantiles: true
stats_quantile_tolerated_error: 0.001
stats_quantile_age_buckets_count: 5
stats_quantile_max_age_time: 180
roles.crud-<router_or_storage>.stats¶
Включить сбор метрик модуля CRUD.
По умолчанию сбор метрик отключен, так как их работа снижает производительность:
на 3-10% – при использовании локального драйвера;
5-15% – при использовании драйвера метрик. Этот драйвер используется по умолчанию;
до 20% – при использовании метрик, которые содержат квантили.
Тип: boolean
Значение по умолчанию: false
roles.crud-<router_or_storage>.stats_driver¶
Задать драйвер для хранения собранных метрик CRUD. Возможные значения:
local
– использовать локальный драйвер;metrics
– использовать драйвер метрик.
Тип: string
Значение по умолчанию: ‘metrics’
Примечание
Включенный сбор метрик CRUD снижает производительность:
на 3-10% – при использовании локального драйвера;
5-15% – при использовании драйвера метрик. Этот драйвер используется по умолчанию.
roles.crud-<router_or_storage>.stats_quantiles¶
Включить квантили метрик.
Опция crud.stats_quantiles
работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics'
).
Примечание
Вычисление квантилей снижает производительность на величину до 10%.
Тип: boolean
Значение по умолчанию: false
roles.crud-<router_or_storage>.stats_quantile_age_buckets_count¶
Количество сегментов квантилей summary.
Увеличение значения сглаживает скользящее окно, но потребляет дополнительную память и CPU.
Опция crud.stats_quantile_age_buckets_count
работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics'
).
Тип: number
Значение по умолчанию: 2
roles.crud-<router_or_storage>.stats_quantile_max_age_time¶
Время жизни сегмента (bucket) в секундах.
Опция crud.stats_quantile_max_age_time
работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics'
).
Меньший срок жизни сегмента приводит к меньшему временному окну для квантилей, при этом
больше ресурсов CPU используется на ротацию сегментов.
Если у вашего приложения низкая частота запросов, увеличьте значение, чтобы уменьшить количество пробелов -nan
в значениях квантилей.
Узнать больше про опцию crud.stats_quantile_max_age_time
можно в документации Tarantool в
разделе Мониторинг.
Тип: number
Значение по умолчанию: 60
roles.crud-<router_or_storage>.stats_quantile_tolerated_error¶
Задать допустимую погрешность квантиля.
Опция stats_quantile_tolerated_error
работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics'
).
Узнать больше про опцию crud.stats_quantile_tolerated_error
можно в документации Tarantool в
разделе Мониторинг.
Тип: number
Значение по умолчанию: 0.001
roles.dictionary-<router_or_storage>¶
Секция задает опции конфигурации для технологических ролей roles.dictionary-router
и roles.dictionary-storage
.
Опции используются для настройки работы словарей.
Пример
roles_cfg:
roles.dictionary-router:
update_instances_list_period: 300
roles.dictionary-storage:
batch_size: 1000
worker_sleep_in_second: 60
update_instances_list_period: 300
connect_timeout: 3
roles.dictionary-<router_or_storage>.batch_size¶
Размер пакета для обмена между узлами в байтах.
Тип: number
Значение по умолчанию: 400
roles.dictionary-<router_or_storage>.worker_sleep_in_second¶
Интервал в секундах между опросами соседнего экземпляра на наличие новых данных.
Тип: number
Значение по умолчанию: 3
roles.dictionary-<router_or_storage>.update_instances_list_period¶
Доступно с версии 2.0.0.
Частота обновления списка узлов в секундах. Модуль хранит список узлов и отслеживает нездоровые узлы. При обнаружении нездорового узла модуль прекращает попытки связаться с ним до следующего обновления списка. Опция также позволяет отслеживать появление новых узлов в кластере.
Тип: number
Значение по умолчанию: 60
roles.dictionary-<router_or_storage>.connect_timeout¶
Доступно с версии 2.0.0.
Время ожидания установки соединения в секундах.
Тип: number
Значение по умолчанию: Неограниченно
roles.expirationd¶
Секция roles.expirationd
задает опции конфигурации устаревания данных.
roles.expirationd.<name>¶
Название задачи по устареванию данных. Обязательный параметр.
Тип: string
Примеры конфигурации¶
Без пользовательской логики
roles_cfg:
roles.expirationd:
task_name1:
space: messages
options:
args:
lifetime_in_seconds: 15
time_create_field: dt
Здесь:
task_name1
– название задачи по устареванию данных;space
– название спейса, по которому идет поиск устаревших кортежей;options.args
– дополнительные опции конфигурации:lifetime_in_seconds
– время жизни кортежа в секундах;time_create_field
– название поля, по которому проверяется время жизни кортежа.
Узнать больше: Автоматическое удаление устаревших кортежей из спейса.
С пользовательской логикой
roles_cfg:
roles.expirationd:
messages_expiration:
space: messages
is_expired: messages_is_tuple_expired
is_master_only: true
options:
tuples_per_iteration: 100
iterate_with: messages_iterate_with
process_expired_tuple: messages_process_expired_tuple
args:
seconds: 5
Здесь:
messages_expiration
– название задачи по устареванию данных;space
– название спейса, по которому идет поиск устаревших кортежей;is_expired
– название функции, которая получает кортеж и проверяет его срок жизни;is_master_only
– экспирация запущена только на master-узлах;options
– дополнительные опции конфигурации:tuples_per_iteration
– количество кортежей, которое проверяется за одну итерацию;iterate_with
– название функции, которая получает и обрабатывает устаревшие кортежи;process_expired_tuple
– название функции, возвращающей итератор для обхода спейса;args
– аргументы, доступные в функцияхmessage_iterate_with
иmessage_process_expired_tuple
,seconds
– время жизни кортежа. А также для поиска устаревших данных по умолчанию. В этом случае используются следующие поля:lifetime_in_seconds
- время жизни кортежа в секундах;time_create_field
- поле “время создания” для оценки времени жизни.
Узнать больше: Проверка устаревших кортежей в спейсе с помощью пользовательских функций.
roles.expirationd.<name>.is_expired¶
Название функции, которая получает кортеж и проверяет его срок жизни.
Функция возвращает true
, если время жизни кортежа истекло.
Обязательный параметр.
Тип: function
roles.expirationd.<name>.is_master_only¶
Запустить работу с устаревающими кортежами только на master-узлах.
Тип: boolean
Значение по умолчанию: false
roles.expirationd.<name>.space¶
Название спейса или идентификатор спейса, по которому идет поиск устаревших кортежей. Обязательный параметр.
Тип: string или number
roles.expirationd.<name>.options¶
Дополнительные опции конфигурации.
Тип: table
Значение по умолчанию: {}
roles.expirationd.<name>.options.args¶
Дополнительные аргументы конфигурации. Доступные аргументы:
seconds
(number
) – время жизни кортежа в секундах. Аргумент нужен, когда для обработки устаревших кортежей используются пользовательские функции. Аргумент передается в опции roles.expirationd.<name>.options.iterate_with и roles.expirationd.<name>.options.process_expired_tuple в качестве дополнительного контекста;lifetime_in_seconds
(number
) – время жизни кортежа в секундах. Доступно с версии 1.2.0. Аргумент используется для настройки автоматического удаления устаревших кортежей;time_create_field
(string
) – название поля, по которому проверяется время жизни кортежа. Доступно с версии 1.2.0. Аргумент используется для настройки автоматического удаления устаревших кортежей. Указанное поле может быть нескольких типов. Функция определения текущего времени зависит от типа данных в опцииtime_create_field
:
Тип |
Текущее время |
---|---|
число |
|
целое число |
|
беззнаковое |
|
datetime |
|
Тип: table
Значение по умолчанию: {}
roles.expirationd.<name>.options.iterate_with¶
Название функции, возвращающей итератор для обхода спейса. Если опция не указана, используется функция по умолчанию. Функция по умолчанию возвращает такой итератор, какой возвращается в index_object:pairs().
Тип: function
roles.expirationd.<name>.options.process_expired_tuple¶
Название функции, которая получает и обрабатывает устаревшие кортежи.
Если опция не указана (или указан nil
), устаревшие кортежи удаляются.
Тип: function
roles.expirationd.<name>.options.tuples_per_iteration¶
Количество кортежей, которое проверяется за одну итерацию.
В значении опции допустимо передавать номер FFI, например 1LL
или 1ULL
.
Тип: number
Значение по умолчанию: 1024